import ajax from './ajax'

// 发送邮箱验证码
export const sendCaptcha = (data) => ajax.post('/customer/sendCaptcha', data)

// 用户登录
export const login = (data) => ajax.post('/customer/login', data)

// 用户注册
export const register = (data) => ajax.post('/customer/register', data)

// 生成注册令牌
export const generateRegisterToken = (data) => ajax.post('/customer/generateRegisterToken', data)

// 获取用户信息
export const getUserInfo = () => ajax.get('/customer/info')

// 上传头像
export function uploadAvatar(data) {
  return ajax({
    url: '/customer/uploadAvatar',
    method: 'post',
    data,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// 更新用户信息
export function updateUserInfo(data) {
  return ajax({
    url: '/customer/update',
    method: 'post',
    data
  })
}

// 修改密码
export function updatePassword(data) {
  return ajax({
    url: '/customer/updatePassword',
    method: 'post',
    data
  })
}

// 忘记密码
export function forgotPassword(data) {
  return ajax({
    url: '/customer/forgotPassword',
    method: 'post',
    data
  })
}


// 修改邮箱
export function updateEmail(data) {
  return ajax({
    url: '/customer/updateEmail',
    method: 'post',
    data
  })
}

/**
 * 获取用户XIN豆余额
 * @returns {Promise} API响应
 */
export function getUserBalance() {
  return ajax({
    url: '/customer/balance',
    method: 'get'
  })
}

/**
 * 获取用户列表
 * @param {Object} params - 查询参数
 * @param {number} params.currentPage - 当前页码
 * @param {number} params.limit - 每页显示数量 
 * @param {string} [params.keyword] - 米米号/邮箱
 * @param {number} [params.status] - 状态
 * @returns {Promise} API响应
 */
export function getUserList(params) {
  return ajax({
    url: '/customer/list',
    method: 'post',
    data: params
  })
}

/**
 * 禁用/启用
 */

export function updateUserStatus(account, status) {
  return ajax({
    url: `/customer/updateStatus/${account}/${status}`,
    method: 'get'
  })
}

/**
 * 设置用户二级密码
 * @param {Object} data - 请求数据
 * @param {string} data.email - 用户邮箱
 * @param {string} data.password - 要设置的二级密码（6位数字）
 * @returns {Promise} API响应
 */
export function setSecondaryPassword(data) {
  return ajax({
    url: '/customer/setSecondPassword',
    method: 'post',
    data
  })
}

/**
 * 校验用户二级密码
 * @param {Object} data - 请求数据
 * @param {string} data.password - 要校验的二级密码
 * @returns {Promise} API响应，成功时 code 为 200
 */
export function verifySecondaryPassword(data) {
  return ajax({
    url: '/customer/verifySecondPassword',
    method: 'post',
    data
  })
}

// 新增：开启/关闭二级密码
export const switchSecondPassword = (data) => {
  return ajax({
    url: '/customer/switchSecondPassword',
    method: 'post',
    data // data 应包含 { status: 0 或 1, password: 'xxx' (仅当 status=0 时需要) }
  })
}

// 新增：首次添加二级密码 (通常在启用时且未设置过密码时调用)
export const addSecondPassword = () => {
  return ajax({
    url: '/customer/addSecondPassword',
    method: 'get' // 根据文档是 GET 请求
  })
}

/**
 * 批量封禁用户
 * @param {Object} data - 请求数据
 * @param {Array} data.accounts - 用户账号数组
 * @param {number} data.banDuration - 封禁时长（天数，0表示永久）
 * @returns {Promise} API响应
 */
export function batchBanUsers(data) {
  return ajax({
    url: '/customer/batchBan',
    method: 'post',
    data
  })
}

/**
 * 批量解封用户
 * @param {Object} data - 请求数据
 * @param {Array} data.accounts - 用户账号数组
 * @param {number} data.unbanType - 解封类型（1: 游戏解封, 2: 交易解封, 3: 全部解封）
 * @param {string} [data.unbanReason] - 解封原因（可选）
 * @returns {Promise} API响应
 */
export function batchUnbanUsers(data) {
  return ajax({
    url: '/customer/batchUnban',
    method: 'post',
    data
  })
}

/**
 * 获取用户物品及宠物列表
 * @param {Object} data - 请求数据
 * @param {number} data.currentPage - 当前页码
 * @param {number} data.limit - 每页数量
 * @param {number} data.account - 用户账号
 * @param {number} [data.itemId] - 物品ID（可选，筛选特定物品）
 * @param {number} [data.itemType] - 物品类型（可选，1是精灵2是道具3是时装）
 * @returns {Promise} API响应
 */
export function getUserItems(data) {
  return ajax({
    url: '/customer/gerUserItems',
    method: 'post',
    data
  })
}

/**
 * 删除用户物品及宠物
 * @param {Object} data - 请求数据
 * @param {number} data.account - 用户账号
 * @param {number} data.itemId - 物品ID
 * @param {number} data.itemType - 物品类型（1是精灵2是道具3是时装）
 * @param {number} data.sellNum - 删除数量（不能为0）
 * @param {number} data.catchTime - 捕获时间（如果不是精灵则为0）
 * @returns {Promise} API响应
 */
export function deleteUserItems(data) {
  return ajax({
    url: '/customer/deleteUserItems',
    method: 'post',
    data
  })
}